package test;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
	public static final int PORT = 9997;
	public static void main(String[] args) {
		
		//Declaro o ServerSocket
		ServerSocket serv=null; 
		//Declaro o Socket de comunicação
		Socket s= null;
		//Declaro o leitor para a entrada de dados
		BufferedReader entrada=null;
		try{
			//Cria o ServerSocket na porta 7000 se estiver disponível
			serv = new ServerSocket(PORT);
			System.out.println("Booting Server.....");
			//Aguarda uma conexão na porta especificada e cria retorna o socket que irá comunicar com o cliente
			System.out.println("Waiting for client command....");
			String buffer = "";
//			do{
				s = serv.accept();
				//Cria um BufferedReader para o canal da stream de entrada de dados do socket s
				entrada = new BufferedReader(new InputStreamReader(s.getInputStream()));
				//Aguarda por algum dado e imprime a linha recebida quando recebe
				buffer = entrada.readLine();
				System.out.println("From Client: "+buffer);
				
				DataOutputStream dos = new DataOutputStream(s.getOutputStream());
				
				dos.writeBytes("Sim\n");
//			}while(buffer.contentEquals("tricolor"));
			
		//trata possíveis excessões de input/output. Note que as excessões são as mesmas utilizadas para as classes de java.io	
		}catch(IOException e){
			//Imprime uma notificação na saída padrão caso haja algo errado.
			System.out.println("Algum problema ocorreu para criar ou receber o socket.");
		}finally{
			try{
				//Encerro o socket de comunicação
				s.close();
				//Encerro o ServerSocket
				serv.close();
			}catch(IOException e){
			}
		}
	}
}

